<?php
namespace admin\controller;
use framework\core\Controller;
use framework\core\Factory;
use framework\tools\Upload;
use framework\tools\Image;
class CategoryController extends Controller{
//    加载首页的方法
    public function indexAction(){
//        把分类查询到在分配
        $model=Factory::M('CategoryModel');
        $cat_list=$model->category_select();
//        echo '<pre>';
//        print_r($cat_list);
//        echo '</pre>';
//        die;
        $this->smarty->assign("cat_list",$cat_list);
        $this->smarty->display('category/index.html');
    }

//    加载添加页面的方法
    public function addAction(){
//        应该从数据表查询真实的分类再分配过去
        $model=Factory::M('CategoryModel');
        $cat_list=$model->category_select();
//        echo '<pre>';
//        print_r($cat_list);
//        echo '</pre>';
//        die;
        $this->smarty->assign("cat_list",$cat_list);
        $this->smarty->display('category/add.html');
    }
//    添加一个对数据进行处理的方法
    public function addHandleAction(){
        $upload=new Upload();
        $upload->setUploadPath(UPLOAD_PATH.'category/');
        $path=$upload->doUpload($_FILES['cat_logo']);
//        echo $path;
//        20190114/5c3c3d73aef488.54631342.jpg
//        die;
//        利用Image类生成缩略图地址再保存到数据表
        $image=new Image(UPLOAD_PATH.'category/'.$path);
        $image->setThumbPath();
        $thumb_path=$image->makeThumb(50,50);
//        把缩略图的地址保存起来
        $data['cat_logo']=$thumb_path;
        $data['cat_name']=$_POST['title'];//接受add.html传递的数值 title是input的name属性
        $data['parent_id']=$_POST['parent_id'];//接受add.html传递的数值 parent_id是select标签的name值
        $model=Factory::M('CategoryModel');
        $res=$model->category_add($data);
        if($res){
            $this->jump('添加成功','index.php?m=admin&c=Category&a=index');

        }else{
            $this->jump('添加失败,错误的原因是'.$model->getError(),'index.php?m=admin&c=Category&a=add');
        }
    }

//    自己定义一个删除分类的方法
    public function deleteAction(){
        $cat_id=$_GET['id'];
        $model=Factory::M('CategoryModel');
//        先判断这个类下面是不是有子类
        $result=$model->isLeafCategory($cat_id);
        if($result){
            $this->jump('有子类不能删除','index.php?m=admin&c=Category&a=index');
        }else{
//            先删除upload的图片
            $path=$model->getCatlogoById($cat_id);
            @unlink(UPLOAD_PATH.'category/'.$path);
//            再删除数据表的信息
            $res=$model->deleteCategory($cat_id);
            if($res){
                $this->jump('删除成功','index.php?m=admin&c=Category&a=index');
            }else{
                $this->jump('删除失败','index.php?m=admin&c=Category&a=index');
            }
        }
    }
//    新建一个显示编辑页面的方法
    public function updateAction(){
        $cat_id=$_GET['id'];
        $model=Factory::M('CategoryModel');
        $cat_info=$model->getInfoById($cat_id);
//        echo '<pre>';
//        print_r($cat_info);
//        echo '</pre>';
//        die;
        $cat_list=$model->category_select();
        $this->smarty->assign("cat_info",$cat_info);
        $this->smarty->assign("cat_list",$cat_list);
        $this->smarty->display('category/edit.html');


    }
//    定义一个接受表单数据的方法
    public function updateHandleAction(){
        if($_FILES['cat_logo']['error']!=0){
//            如果用户没有上传用旧图片
            $data['cat_logo']=$_POST['old_cat_logo'];
        }else{
//            如果用户上传了用新图片
//            先删除旧的图片地址
            @unlink(UPLOAD_PATH.'category/'.$_POST['old_cat_logo']);
//            在生成新的图片地址
            $upload=new Upload();
            $upload->setUploadPath(UPLOAD_PATH.'category/');
            $path=$upload->doUpload($_FILES['cat_logo']);
            $data['cat_logo']=$path;
        }
        $data['cat_id']=$_POST['cat_id'];
        $data['cat_name']=$_POST['title'];
        $data['parent_id']=$_POST['parent_id'];
        $model=Factory::M('CategoryModel');
        $res=$model->category_update($data);
        if($res){
            $this->jump('更新成功','index.php?m=admin&c=Category&a=index');
        }else{
            $this->jump('更新失败,失败的原因是'.$model->getError(),'index.php?m=admin&c=Category&a=update');
        }
    }
}